from PyQt5.QtCore import QRegExp
from PyQt5.QtGui import QRegExpValidator
from PyQt5.QtWidgets import QMessageBox

from backEnd.utils import get_common_mysql_error

regular_dict = {
    "name": "^[\u4e00-\u9fa5]{0,}$",  # 汉字--用于限制用户姓名输入
    "password": "^[a-zA-Z]\w{5,17}$",  # 密码--以字母开头，长度在6~18之间，只能包含字母、数字和下划线
    "remaining": "^\d+(\.\d+)?$",  # 存款--非负浮点数
    "identity_id": "^\d{15}|\d{18}$",  # 身份证号--15位、18位数字
    "telephone": "^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$",  # 手机号--13 15 18开头，11位手机号
    "address": "^[\u4e00-\u9fa5]{0,}$",  # 汉字--用于限制地址输入
    "permission": "^[1-3]*$",  # 权限--权限1：超级用户 2：一级管理员 3：二级管理员
    "id": "(0|[1-9][0-9]*)",  # id--零和非零开头的数字
    "page": "^[1-9]\d*$",  # 页码--非零的正整数
}


# 正则限制输入
def regular_restricted_input(lineEdit_name: object, target: object) -> object:
    rx = QRegExp(regular_dict[target])
    pReg = QRegExpValidator(rx)
    lineEdit_name.setValidator(pReg)


def error_display(widget, error):
    message = get_common_mysql_error(error)
    QMessageBox.information(widget, "提示", message, QMessageBox.Yes)
